<?php

class Social_model extends CI_Model
{
    private $db_b;
    
    function __construct()
    {
        parent::__construct();
        $this->db_b=$this->load->database('academica',true);
    }
    
    /*
    *   Nombre: datos_municipios
    *   Objetivo: muestra los municipios y los departamentos geograficos para las direcciones
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 12/10/2014
    *   Observaciones: Ninguna.
    */
    
    function datos_municipios($id_municipio=NULL)
    {
        $where="";
        if($id_municipio!=NULL) $where="where m.id_municipio=".$id_municipio;
        
        $query="SELECT DISTINCT m.id_municipio, d.id_departamento, m.municipio, d.departamento
                FROM org_municipio as m
                INNER JOIN org_departamento as d ON (d.id_departamento=m.id_departamento_pais) ".$where;
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: datos_profesores
    *   Objetivo: muestra los nombres de los profesores y los departamentos acad?micos a los que pertenecen
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 05/08/2014
    *   Observaciones: Ninguna.
    */
    
    function datos_profesores()
    {
        $query="select id_tutor, LOWER(CONCAT_WS(' ',t.nombres, t.apellidos)) as tutor, d.nombre as departamento
                from tutor as t inner join departamento as d on (t.id_departamento=d.id_departamento)
                where t.estado='1'";
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: estudiantes_academica
    *   Objetivo: extrae la informaci?n de la base de datos de acad?mica
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 05/08/2014
    *   Observaciones: Ninguna.
    */
    
    function estudiantes_academica($carnet=NULL)
    {
        $where="";

        if($carnet!=NULL){

            $where=" WHERE carnet='".$carnet."'";
        }

        $query="select DISTINCT(codigo_carrera) as cod_carrera, carnet, lower(nombre || ' ' || apellidos) as estudiante, nombre_carrera as carrera, ceil(porcentaje_carrera) as porcentaje, lower(nombre) as nombre, lower(apellidos) as apellido
        from datos_alumnos_temporal".$where;        
        $query=$this->db_b->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: guardar_plan
    *   Objetivo: guarda el registro de un nuevo plan en la base de datos
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   última Modificación: 15/03/2015
    *   Observaciones: Ninguna.
    */
    
    function guardar_plan($datos)
    {
        extract($datos);
                
        /*insert de la tabla direcci?n*/
        $query1="INSERT INTO direccion (comunidad, detalle, id_municipio) VALUES ('$comunidad', '$detalle', '$id_municipio');";
        if($this->db->query($query1)) /*Si insert? correctamente*/
        {
            $id_direccion=$this->social_model->get_last_id_direccion();
            
            $fechaaprobacion2=date('Y-m-d',strtotime($fechaaprobacion));
            
            /*insert de la tabla acuerdo*/
            $query2="INSERT INTO acuerdo (titulo, fechaaprobacion, numero, estado, tipo) VALUES ('$titulo', '$fechaaprobacion2', '$numero', '1', '1');";
            if($this->db->query($query2))/*si insert? correctamente*/
            {
                $id_acuerdo=$this->social_model->get_last_id_acuerdo();
                
                $inicioperiodo2=date('Y-m-d',strtotime($inicioperiodo));
                $finperiodo2=date('Y-m-d',strtotime($finperiodo));
                
                $query3="INSERT INTO plan (titulo, inicioperiodo, finperiodo, institucion, beneficiarios, id_direccion, memoria, estado, presupuesto, horarios, responsable, tel_responsable, id_acuerdo, id_tutor)
                VALUES ('$titulo', '$inicioperiodo2', '$finperiodo2', '$institucion', '$beneficiarios', '$id_direccion', 'false', '1', '$presupuesto', '$horarios', '$responsable', '$tel_responsable', '$id_acuerdo', '$id_tutor');";
                
                if($this->db->query($query3))/*si insert? correctamente*/
                {
                    $id_plan=$this->social_model->get_last_id_plan();
                    
                    /*$estudiante=$this->social_model->datos_estudiantes_academica($carnet);*/
                    
                    $band=1;/*Bandera que verifica si todos los insert a la tabla de estudiantes fueron exitosos*/
                    $cont=count($carnet);
                    $horas=(int)($num_horas/$cont);
                    $j=0;
                    for($k=0;$k<$cont;$k++)
                    {
                        $est_inf=explode('**',$info[$k]);
                        $karnet=$carnet[$k];
                        $nombres=$est_inf[1];
                        $apellidos=$est_inf[2];
                        $codigo=$est_inf[0];
                                                
                        $band2=0;/*Bandera que verificar? si el estudiante ya existe en la base de datos interna*/
                        $id_estu="";
                        $es=$this->social_model->estudiantes_ups($karnet);
 
                        foreach($es as $e)
                        {
                            if($e['id_estudiante']!="")
                            {
                                $id_estu=$e['id_estudiante'];
                                $band2=1;/*El estudiante a ingresar ya existe en la base de datos de la UPS*/
                            }
                        }
                        if($band2==0)/*El estudiante no existe en la base de datos de la UPS*/
                        {
                            $id_carrera=$this->social_model->get_id_carrera($codigo);
                            
                            $query4="INSERT INTO estudiante (nombres, apellidos, carnet, becario, telefono, correo, estado, id_carrera, sexo) 
                                VALUES ('$nombres', '$apellidos', '$karnet', '0', '$telefono[$j]', '$correo[$j]', '1', '$id_carrera', '$sexo[$j]');";
                                $b=$this->db->query($query4);
                            if($b)/*Si inserta correctamente*/
                            {
                                $id_estudiante=$this->social_model->get_last_id_estudiante();
                                $query5="INSERT INTO estudiante_plan (id_estudiante, id_plan,num_horas) VALUES ('$id_estudiante', '$id_plan', '$horas');";
                                if($this->db->query($query5)) $band=$band*1;
                                else $band=$band*0;
                            }
                        }
                        elseif($id_estu!="")
                        {
                            $query4="UPDATE estudiante SET telefono='$telefono[$j]', correo='$correo[$j]', estado='1', sexo='$sexo[$j]' WHERE id_estudiante='$id_estu'";
                            if($this->db->query($query4))/*Si inserta correctamente*/
                            {
                                            

                                $query5="INSERT INTO estudiante_plan (id_estudiante, id_plan, num_horas) VALUES ('$id_estu', '$id_plan', '$horas');";
                                                               
                                if($this->db->query($query5)) $band=$band*1;
                                else $band=$band*0;
                                 
                            }
                        }
                        $j++;
                    }
                    if($band==1)/*Si se insertaron correctamente todos los registros de los estudiantes*/
                    {
                        $query6="INSERT INTO constancia (nombre, tipo, id_plan) VALUES ('$acuerdo', '1', '$id_plan');";
                        
                        if($this->db->query($query6))/*Si se insert? correctamente el acuerdo de aprobaci?n del plan*/
                        {
                            $query7="INSERT INTO constancia (nombre, tipo, id_plan) VALUES ('$doc_plan', '2', '$id_plan');";
                            return $this->db->query($query7);
                        } 
                    }
                }
            }
        }
    }
    
    /*
    *   Nombre: actualizar_plan
    *   Objetivo: actualiza un registro de la tabla plan y de todas las tablas relacionadas.
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 18/10/2014
    *   Observaciones: Ninguna.
    */
    
    function actualizar_plan($datos)
    {
        extract($datos);
        
        /*insert de la tabla direcci?n*/
        $query1="UPDATE direccion SET comunidad='$comunidad', detalle='$detalle', id_municipio='$id_municipio' WHERE id_direccion='$id_direccion';";
        if($this->db->query($query1)) /*Si insert? correctamente*/
        {
            $fechaaprobacion2=date('Y-m-d',strtotime($fechaaprobacion));
            
            /*insert de la tabla acuerdo*/
            $query2="UPDATE acuerdo SET titulo='$titulo', fechaaprobacion='$fechaaprobacion2', numero='$numero' WHERE id_acuerdo='$id_acuerdo';";
            if($this->db->query($query2))/*si insert? correctamente*/
            {
                $inicioperiodo2=date('Y-m-d',strtotime($inicioperiodo));
                $finperiodo2=date('Y-m-d',strtotime($finperiodo));
                
                $query3="UPDATE plan SET titulo='$titulo', inicioperiodo='$inicioperiodo2', finperiodo='$finperiodo2', institucion='$institucion', beneficiarios='$beneficiarios', presupuesto='$presupuesto', horarios='$horarios', responsable='$responsable', tel_responsable='$tel_responsable', id_tutor='$id_tutor' WHERE id_plan='$id_plan';";
                
                if($this->db->query($query3))/*si insert? correctamente*/
                {
                    $query4="UPDATE constancia SET nombre='$acuerdo' WHERE (id_plan='$id_plan' AND tipo='1');";
                    
                    if($this->db->query($query4))/*Si se insert? correctamente el acuerdo de aprobaci?n del plan*/
                    {
                        $query5="UPDATE constancia SET nombre='$doc_plan' WHERE (id_plan='$id_plan' AND tipo='2');";
                        return $this->db->query($query5);
                    }
                }
            }
        }
    }
    
    /*
    *   Nombre: agrega_prorroga
    *   Objetivo: ingresa en la base de datos un registro de pr?rroga para un plan en espec?fico
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 21/10/2014
    *   Observaciones: Ninguna.
    */
    
    function agrega_prorroga($datos)
    {
        extract($datos);
        $band=1;
        if($doc!=NULL && $doc!='')
        {
            $query="insert into constancia (nombre,tipo,id_plan) values ('$doc','4','$id_plan')";
            if($this->db->query($query))$band=$band*1;
            else $band=$band*0;
        }
        if($band==1)
        {
            $fecha_inicial2=date('Y-m-d',strtotime($fecha_inicial));
            $fecha_final2=date('Y-m-d',strtotime($fecha_final));
            $query="INSERT INTO prorroga (fecha_inicial, fecha_final, tipo, id_plan) VALUES ('$fecha_inicial2', '$fecha_final2', '1', '$id_plan');";
            return $this->db->query($query);
        }
    }
    
    /*
    *   Nombre: agrega_file
    *   Objetivo: ingresa en la base de datos un registro de documento para un plan en espec?fico
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 23/10/2014
    *   Observaciones: Ninguna.
    */
    
    function agrega_file($datos)
    {
        extract($datos);
        
        $query="insert into constancia (nombre,tipo,id_plan) values ('$doc','5','$id_plan')";
        return $this->db->query($query);
    }
    
    /*
    *   Nombre: cancel_plan
    *   Objetivo: cancela un plan cambiando el estado a 0
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 21/10/2014
    *   Observaciones: Ninguna.
    */
    
    function cancel_plan($datos)
    {
        extract($datos);
        $band=1;
        if($doc!=NULL && $doc!='')
        {
            $query="insert into constancia (nombre,tipo,id_plan) values ('$doc','6','$id_plan')";
            if($this->db->query($query))$band=$band*1;
            else $band=$band*0;
        }
        if($band==1)
        {
            $query="update plan set estado='0', observacion='$observacion' where id_plan='$id_plan'";
            return $this->db->query($query);
        }
    }
    
    /*
    *   Nombre: reanudar_plan
    *   Objetivo: reanudar un plan que hab?a estado cancelado
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 27/02/2015
    *   Observaciones: Ninguna.
    */
    
    function reanudar_plan($id)
    {
        $query="UPDATE plan SET estado='1' WHERE id_plan='$id'";
        return $this->db->query($query);
    }
    
    /*
    *   Nombre: fin_plan
    *   Objetivo: finaliza un plan pasandolo a memoria
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 26/02/2015
    *   Observaciones: Ninguna.
    */
    
    function fin_plan($datos)
    {
        extract($datos);
        $band=1;
        if($doc!=NULL && $doc!='')
        {
            $query="insert into constancia (nombre,tipo,id_plan) values ('$doc','3','$id_plan')";
            if($this->db->query($query))$band=$band*1;
            else $band=$band*0;
        }
        if($band==1)
        {
            /*
            $inicio_memoria2=date('Y-m-d',strtotime($inicio_memoria));
            $fin_memoria2=date('Y-m-d',strtotime($fin_memoria));
            $query="update plan set memoria=true, numero_memoria='$numero_memoria', inicio_memoria='$inicio_memoria2', fin_memoria='$fin_memoria2' where id_plan='$id_plan'";
            */
            $fin_memoria2=date('Y-m-d',strtotime($fin_memoria));
            $query="update plan set memoria=true, numero_memoria='$numero_memoria', fin_memoria='$fin_memoria2' where id_plan='$id_plan'";
            if($this->db->query($query))
            {
                if(!empty($cambiar))
                {
                    $band=1;
                    for($i=0;$i<count($cambiar);$i++)
                    {
                        $query2="UPDATE estudiante_plan SET num_horas='".$num_horas[$i]."' WHERE id_estudiante='".$cambiar[$i]."'";
                        if($this->db->query($query2)) $band=$band*1;
                        else $band=$band*0;
                    }
                    
                    if($band==1) return true;
                    else return false;
                }
                else return true;
            }
            else return false;
        }
        else return false;
    }
    
    /*
    *   Nombre: get_id_carrera
    *   Objetivo: obtiene el id_carrera de una carrera en espec?fico por su c?digo
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 12/08/2014
    *   Observaciones: Ninguna.
    */
    
    function get_id_carrera($cod)
    {       
        $query="select id_carrera from carrera where codigo like '".$cod."'";
        $query=$this->db->query($query);
        $code=$query->result_array();
        foreach($code as $c)
        {
            return $c['id_carrera'];
        }       
    }
    
    /*
    *   Nombre: get_last_id_direccion
    *   Objetivo: obtiene el ?timo registro de id_direcci?n
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 12/10/2014
    *   Observaciones: Ninguna.
    */
    
    function get_last_id_direccion()
    {       
        $query="SELECT MAX(id_direccion) AS id_direccion FROM direccion";
        $query=$this->db->query($query);
        $dire=$query->result_array();
        foreach($dire as $dir)
        {
            return $dir['id_direccion'];
        }       
    }
    
    /*
    *   Nombre: get_last_id_acuerdo
    *   Objetivo: obtiene ?ltimo registro de id_acuerdo
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 12/10/2014
    *   Observaciones: Ninguna.
    */
    
    function get_last_id_acuerdo()
    {       
        $query="select max(id_acuerdo) as id_acuerdo from acuerdo";
        $query=$this->db->query($query);
        $acuerdo=$query->result_array();
        foreach($acuerdo as $acord)
        {
            return $acord['id_acuerdo'];
        }       
    }
    
    /*
    *   Nombre: get_last_id_plan
    *   Objetivo: obtiene el ?ltimo registro de id_plan
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 12/10/2014
    *   Observaciones: Ninguna.
    */
    
    function get_last_id_plan()
    {       
        $query="select max(id_plan) as id_plan from plan";
        $query=$this->db->query($query);
        $plan=$query->result_array();
        foreach($plan as $p)
        {
            return $p['id_plan'];
        }       
    }
    
    /*
    *   Nombre: get_last_id_estudiante
    *   Objetivo: obtiene el ?ltimo registro de id_estudiante
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 12/10/2014
    *   Observaciones: Ninguna.
    */
    
    function get_last_id_estudiante()
    {       
        $query="select max(id_estudiante) as id_estudiante from estudiante";
        $query=$this->db->query($query);
        $est=$query->result_array();
        foreach($est as $e)
        {
            return $e['id_estudiante'];
        }       
    }
    
    /*
    *   Nombre: datos_estudiantes_academica
    *   Objetivo: obtiene el/los nombre(s) y el/los apellido(s) de el/los estudiante(s) a partir del carnet
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 14/10/2014
    *   Observaciones: Ninguna.
    */
    
    function datos_estudiantes_academica($cn)
    {
        $where="";
        for($i=0;$i<count($cn);$i++)
        {
            if($i==0) $where=$where." where (carnet like '".$cn[$i]."'";
            else $where=$where." or carnet like '".$cn[$i]."'";
        }
        $where=$where." )";
        
        $query="select distinct (codigo_carrera) as cod_carrera, carnet, nombre, apellidos as apellido from datos_alumnos_temporal ".$where;
        $query=$this->db_b->query($query);
        return $query->result_array();      
    }
    
    /*
    *   Nombre: ver_planes
    *   Objetivo: obtiene de la base de datos la informaci?n de los planes
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 26/02/2015
    *   Observaciones: Ninguna.
    */
    
    function ver_planes($band='false')
    {
        if($band=='true')
        {
            $query="select p.id_plan, p.estado, p.numero_memoria, p.titulo,to_char(p.inicio_memoria,'dd-mm-YYYY') as inicio_memoria,
                to_char(p.fin_memoria,'dd-mm-YYYY') as fin_memoria
                from plan as p
                inner join acuerdo as a on (p.id_acuerdo=a.id_acuerdo)
                where p.memoria=".$band."
                ORDER BY p.inicioperiodo ASC";
        }
        else
        {
            $query="select p.id_plan, p.estado, a.numero, p.titulo, to_char(p.inicioperiodo,'dd-mm-YYYY') as finicioperiodo,
                to_char(p.finperiodo,'dd-mm-YYYY') as ffinperiodo
                from plan as p
                inner join acuerdo as a on (p.id_acuerdo=a.id_acuerdo)
                where p.memoria=".$band."
                ORDER BY p.inicioperiodo ASC";
        }
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: planes_info
    *   Objetivo: obtienen de la base de datos la informaci?n completa de los planes
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 15/03/2015
    *   Observaciones: Ninguna.
    */
    
    function planes_info($id,$memo=NULL,$may=NULL)
    {
        $select="";
		$selectmay="m.municipio, p.institucion, depto.departamento, ";
        $memoria="false";
		if($may==1)
		{
			$selectmay="upper(m.municipio) as municipio, upper(p.institucion) as institucion, upper(depto.departamento) as departamento, ";
		}
        if($memo!=NULL)
        {
            $memoria=$memo;
            $select=", p.numero_memoria, to_char(p.inicio_memoria,'dd-mm-YYYY') as inicio_memoria,
                to_char(p.fin_memoria,'dd-mm-YYYY') as fin_memoria ";
        }
        $query="select p.id_plan, p.estado, p.titulo, to_char(p.inicioperiodo,'dd-mm-YYYY') as inicioperiodo,
                to_char(p.finperiodo,'dd-mm-YYYY') as finperiodo, p.beneficiarios,
                d.*, ".$selectmay." p.presupuesto, p.responsable, p.tel_responsable, p.observacion, p.horarios, a.numero,
                to_char(a.fechaaprobacion, 'dd-mm-YYYY') as fechaaprobacion, a.id_acuerdo, horas.num_horas".$select."
                from plan as p
                inner join direccion as d on (p.id_direccion=d.id_direccion)
                inner join org_municipio as m on (d.id_municipio=m.id_municipio)
                inner join org_departamento as depto on (depto.id_departamento=m.id_departamento_pais)
                inner join acuerdo as a on (a.id_acuerdo=p.id_acuerdo)
                INNER JOIN (SELECT id_plan,SUM(num_horas) AS num_horas FROM estudiante_plan GROUP BY id_plan) AS horas ON (horas.id_plan=p.id_plan)
                where (p.memoria=".$memoria." and p.id_plan='$id') and (a.estado='1' and a.tipo='1')
                ORDER BY p.inicioperiodo ASC";
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    
    /*
    *   Nombre: estudiantes_plan_info
    *   Objetivo: obtienen de la base de datos la informaci?n completa de los estudiantes de acuerdo a un plan
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 15/03/2015
    *   Observaciones: Ninguna.
    */
    
    function estudiantes_plan_info($id,$id2=NULL,$may=NULL)
    {
		$selectmay="(e.nombres ||' '|| e.apellidos) as estudiante, k.nombre as carrera,";
		if($may==1)
		{
			$selectmay="(upper(e.nombres) ||' '|| upper(e.apellidos)) as estudiante, upper(k.nombre) as carrera,";
		}
        $where="";
        if($id2!=NULL) $where=" and e.id_estudiante='$id2'";
        $query="SELECT e.id_estudiante, ".$selectmay."  e.sexo, e.correo, e.carnet, e.telefono,
                dir.detalle, dir.comunidad, dir.id_direccion, dir.id_municipio, k.codigo,
                depto.nombre as depto, od.id_departamento, od.departamento as depart, ep.num_horas
                from estudiante as e
                inner join estudiante_plan as ep on (ep.id_estudiante=e.id_estudiante)
                inner join plan as p on (p.id_plan=ep.id_plan)
                inner join carrera as k on (k.id_carrera=e.id_carrera)
                inner join departamento as depto on (depto.id_departamento=k.id_departamento)
                LEFT  JOIN direccion as dir on (dir.id_direccion=e.id_direccion)
                left JOIN org_municipio as om on (om.id_municipio=dir.id_municipio)
                left JOIN org_departamento as od on (od.id_departamento=om.id_departamento_pais)
                where p.id_plan='$id'".$where;
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: tutor_plan_info
    *   Objetivo: obtiene de la base de datos la informaci?n completa de el/los tutor(es) de acuerdo a un plan o todos los planes
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 03/10/2014
    *   Observaciones: Ninguna.
    */
    
    function tutor_plan_info($id=NULL)
    {
        if($id!=NULL)
        {
            $query="SELECT t.id_tutor, (t.nombres ||' '|| t.apellidos) as tutor, depto.nombre as depto
                    from tutor as t
                    inner join departamento as depto on (depto.id_departamento=t.id_departamento)
                    inner join plan as p on (p.id_tutor=t.id_tutor)
                    where p.id_plan='$id'";
        }
        else
        {
            $query="SELECT t.id_tutor, (t.nombres ||' '|| t.apellidos) as tutor, depto.nombre as depto
                    from tutor as t
                    inner join departamento as depto on (depto.id_departamento=t.id_departamento)
                    inner join plan as p on (p.id_tutor=t.id_tutor)";
        }
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: prorrogas
    *   Objetivo: obtiene de la base de datos la informaci?n de las pr?rrogas
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 03/10/2014
    *   Observaciones: Ninguna.
    */
    
    function prorrogas($id)
    {
        $query="SELECT pro.id_prorroga, to_char(pro.fecha_inicial,'dd-mm-YYYY') as fecha_inicial, to_char(pro.fecha_final,'dd-mm-YYYY') as fecha_final
                FROM prorroga as pro
                WHERE pro.id_plan='$id' AND pro.tipo=1";
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: documentos
    *   Objetivo: obtiene de la base de datos los documentos referentes a un plan
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 15/10/2014
    *   Observaciones: Ninguna.
    */
    
    function documentos($id,$todo=NULL)
    {
        $where="";
        if($todo!=NULL)/*si todo es null entonces se mostrar?n todos los documentos,de lo contrario solo se mostrar?n el acuerdo de aprobaci?n del plan y el documento del plan*/
        {
            $where=" AND (tipo='1' OR tipo='2')";
        }
        $query="SELECT nombre, tipo FROM constancia WHERE id_plan = '$id' ".$where." ORDER BY tipo ASC;";
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: estudiantes_ups
    *   Objetivo: obtiene de la base de datos los estudiantes registrados en la base de datos de la UPS
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 02/11/2014
    *   Observaciones: Ninguna.
    */
    
    function estudiantes_ups($carnt=NULL)
    {
        $where="";
        
        if($carnt!=NULL) $where=" where e.carnet like '$carnt'";
        
        $query="SELECT e.id_estudiante, (e.nombres ||' '|| e.apellidos) as estudiante, e.carnet, e.telefono,
                d.*, k.codigo, k.nombre as carrera, depto.nombre as depto
                from estudiante as e
                inner join carrera as k on (k.id_carrera=e.id_carrera)
                inner join departamento as depto on (depto.id_departamento=k.id_departamento)
                left join direccion as d on (d.id_direccion=e.id_direccion)".$where;
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    /*
    *   Nombre: existe_UPS
    *   Objetivo: verifica si el estudiante ya existe en la base de datos interna a travez de su carnet
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 02/11/2014
    *   Observaciones: Ninguna.
    */
    
    function existe_UPS($carnet)
    {       
        $query="SELECT carnet FROM estudiante WHERE carnet like '$carnet'";
        $query=$this->db->query($query);
        
        if($query->num_rows()>0) return 'si';
        elseif($query->num_rows()==0) return 'no';
    }
    
    /*
    *   Nombre: insertar_est
    *   Objetivo: guarda un registro en la base de datos de un nuevo estudiante
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   última Modificación: 15/03/2015
    *   Observaciones: Ninguna.
    */
    
    function insertar_est($carnet,$id,$tel,$cor,$sex,$hours,$inf)
    {       
        $data=explode('**',$inf);
        $cod_carrera=$data[0];
        $nombres=$data[1];
        $apellidos=$data[2];
        
        $id_carrera=$this->social_model->get_id_carrera($cod_carrera);
            
        $query1="INSERT INTO estudiante (nombres, apellidos, carnet, becario, telefono, correo, estado, id_carrera, sexo) 
                            VALUES ('$nombres', '$apellidos', '$carnet', '0', '$tel', '$cor', '1', '$id_carrera', '$sex');";
        if($this->db->query($query1))/*Si inserta correctamente*/
        {
            $id_estudiante=$this->social_model->get_last_id_estudiante();
            $query2="INSERT INTO estudiante_plan (id_estudiante, id_plan, num_horas) VALUES ('$id_estudiante', '$id', '$hours');";
            return $this->db->query($query2);
        }
    }
    
    /*
    *   Nombre: eliminar_est_plan
    *   Objetivo: elimina un registro en la base de datos de un estudiante
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 18/10/2014
    *   Observaciones: Ninguna.
    */
    
    function eliminar_est_plan($id_est,$id_p)
    {
        $query="delete from estudiante_plan where (id_estudiante='$id_est' and id_plan='$id_p');";
        return $this->db->query($query);
    }
    
    /*
    *   Nombre: insertar_estudiante_plan
    *   Objetivo: Inserta una nueva relacion estudiante-plan en la base de datos de la UPS
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 18/10/2014
    *   Observaciones: Ninguna.
    */
    
    function insertar_estudiante_plan($carnet,$id_p,$hours)
    {
        $es=$this->social_model->estudiantes_ups($carnet);
        foreach($es as $e)
        {
            $id_estudiante=$e['id_estudiante'];
        }
        $query="INSERT INTO estudiante_plan (id_estudiante, id_plan, num_horas) VALUES ('$id_estudiante', '$id_p', '$hours');";
        return $this->db->query($query);
    }
    
    /*
    *   Nombre: modificar_horas
    *   Objetivo: modifica el numero de horas correspondientes a un plan
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 19/02/2015
    *   Observaciones: Ninguna.
    */
    
    function modificar_horas($id_p,$hours)
    {
        $query="UPDATE estudiante_plan SET num_horas='$hours' WHERE id_plan='$id_p'";
        return $this->db->query($query);
    }
    
    /*
    *   Nombre: info_vicedecanatura
    *   Objetivo: obtiene la informaci?n de la persona en la vicedecanatura
    *   Hecha por: Oscar
    *   Modificada por: Oscar
    *   ?ltima Modificaci?n: 27/02/2015
    *   Observaciones: Ninguna.
    */
    
    function info_vicedecanatura()
    {
        $query="SELECT (titulo ||' '|| nombres ||' '|| apellidos) as vicedecano, sexo as sexov FROM tutor WHERE vicedecanatura=1";
        $query=$this->db->query($query);
        return $query->result_array();
    }
    
    function verificacion($carnet='')
    {

        $query="SELECT ep.id_estudiante,    e.nombres, e.apellidos,
                    e.carnet,p.titulo, c.nombre as carrera, c.horas_req,
                    e.sexo, ep.num_horas, pe.inicio, pe.fin, ac.numero FROM estudiante_plan ep
                    INNER JOIN plan p ON p.id_plan= ep.id_plan
                    INNER JOIN estudiante e ON e.id_estudiante= ep.id_estudiante
                    INNER JOIN carrera c ON c.id_carrera= e.id_carrera
                    INNER JOIN periodo  pe ON p.id_plan = pe.id_plan
                    INNER JOIN acuerdo ac ON  ac.id_acuerdo= p.id_acuerdo
                WHERE e.carnet='$carnet'";
        $query=$this->db->query($query);
        return $query->result_array();

    }
    function planes_tutores($info)
    {
        extract($info);

        $query=" SELECT p.id_plan,  
                to_char(inicio,'dd') as di,
                to_char(inicio,'mm') as mi,
                to_char(inicio,'yyyy') as ai,
                to_char(fin,'dd') as df,
                to_char(fin,'mm') as mf,
                to_char(fin,'yyyy') as af,
                UPPER(CONCAT_WS(', ',p.titulo,mun.municipio,dep.departamento))as proyecto               
                FROM
                plan AS p
                INNER JOIN direccion AS d ON p.id_direccion = d.id_direccion
                INNER JOIN org_municipio AS mun ON d.id_municipio = mun.id_municipio
                INNER JOIN org_departamento AS dep ON dep.id_departamento = mun.id_departamento_pais
                INNER JOIN periodo pe ON pe.id_plan= p.id_plan              
            WHERE  p.memoria = TRUE AND p.id_tutor= $id_tutor AND to_char(fin,'yyyy') = '$year';";
        $query=$this->db->query($query);
        return $query->result_array();

    }
    function info_tutor($id_tutor=NULL)
    {
            $sentecia="SELECT
            CONCAT_WS (' ',titulo,nombres,apellidos) AS tutor,
            sexo AS sexot,
            d.nombre as departamento
            FROM
                tutor t 
            INNER JOIN departamento d ON d.id_departamento = t.id_departamento
            WHERE
                id_tutor=$id_tutor
            "; 
        $query=$this->db->query($sentecia);
        return $query->result_array();      
    }
    function years()
    {
    
            $sentecia="SELECT to_char(fin,'yyyy') as year FROM periodo GROUP BY year"; 
        $query=$this->db->query($sentecia);
        return $query->result_array();      
    }
function planes_por_tutor_f($info)
{

        extract($info);
$where=" WHERE TRUE ";
switch ($estado) {
    case 1:
        
        $where.=" AND p.memoria=FALSE ";

        break;
    /*case 2:  //este codigo era porque antes se pensaba que se activaba la parte de memoria, pero no es asi, sino que solo se hace una apertura y un cierre
        $where.=" AND p.fin_memoria IS NULL AND p.memoria=TRUE ";
        break;
    case 3:
        
        $where.=" AND p.fin_memoria IS NOT NULL AND p.memoria=TRUE ";
        break; */
    case 2:
        $where.=" AND p.memoria=TRUE ";
        break;
    default:
        
        break;
}



if($start!=""){
    fecha_SV_DB($start);
    $where.=" AND pe.inicio>=   '".$start."'::TIMESTAMP";

}
if($end!=""){
    fecha_SV_DB($end);
    $where.=" AND pe.inicio<=   '".$end."'::TIMESTAMP";

}
if($start1!=""){
    fecha_SV_DB($start1);
    $where.=" AND pe.fin>=   '".$start1."'::TIMESTAMP";

}
if($end1!=""){
    fecha_SV_DB($end1);
    $where.=" AND pe.fin<=   '".$end1."'::TIMESTAMP";

}

if ($id_tutor!="" && $id_tutor!=0) {
    $where.=" AND t.id_tutor= $id_tutor";
}

if ($id_tutor==0 && $id_departamento!=0) { ///todos los tutores de un departamento
    $where.=" AND t.id_departamento= $id_departamento";
}


return $where;
}
function planes_por_tutor_c($info)
{


$where=$this->planes_por_tutor_f($info);



    $q=" SELECT CONCAT_WS(' ',t.nombres,t.apellidos)as tutor, 
                count(p.id_plan) as cant
                FROM
                plan AS p
                INNER JOIN direccion AS d ON p.id_direccion = d.id_direccion
                INNER JOIN periodo pe ON pe.id_plan= p.id_plan              
                INNER JOIN tutor t USING(id_tutor) 
            ".$where."
         GROUP BY t.id_tutor";
        $query=$this->db->query($q);
        return $query->result_array();      
}
function planes_por_tutor($info)
{


$where=$this->planes_por_tutor_f($info);



    $q="SELECT  p.id_plan,  
                a.numero,
                UPPER(CONCAT_WS(', ',p.titulo,mun.municipio,dep.departamento))as proyecto,              
                CONCAT_WS(' ',t.nombres,t.apellidos)as tutor, 
                pe.inicio,
                pe.fin,         
                t.id_tutor
                FROM
                plan AS p
                INNER JOIN direccion AS d ON p.id_direccion = d.id_direccion
                INNER JOIN org_municipio AS mun ON d.id_municipio = mun.id_municipio
                INNER JOIN org_departamento AS dep ON dep.id_departamento = mun.id_departamento_pais
                INNER JOIN periodo pe ON pe.id_plan= p.id_plan              
                INNER JOIN tutor t USING(id_tutor) 
                INNER JOIN acuerdo a USING(id_acuerdo)
            ".$where;
        $query=$this->db->query($q);
        return $query->result_array();      
}

function ejecutar($info)
{
    extract($info);
    
    $query=$this->db->query($sql);
    return $query->result_array();      

}
}


?>